#ifndef LIB_AX_OCEAN_DATASET_H
#define LIB_AX_OCEAN_DATASET_H
#include "libAcoustX/export.h"
#include "NDimsArray/NDimsArray.h"

namespace ax {
namespace ocean {
class AX_EXPORT Dataset 
{
public:
	using sptr = std::shared_ptr<Dataset>;
	using csptr = std::shared_ptr<const Dataset>;
	using SspDepthValue = std::map<double, float>;

	Dataset();
	virtual ~Dataset();

	void setSspDB(std::shared_ptr<darr::DimsArray<float>> ssp_db);
	std::shared_ptr <darr::DimsArray<float>> getSspDB() const;
	void setSedimentDB(std::shared_ptr<darr::DimsArray<short>> sed_db);
	std::shared_ptr<darr::DimsArray<short>> getSedimentDB() const;
	void setDepthDB(std::shared_ptr<darr::DimsArray<short>> depths_db);
	std::shared_ptr<darr::DimsArray<short>> getDepthDB() const;

	float getSsp(double lon, double lat, double depth, float default_val = 1500) const;
	SspDepthValue getSsp(double lon, double lat) const;
	short getSediment(double lon, double lat) const;
	short getDepth(double lon, double lat, short default_depth = -200) const;

protected:
	std::shared_ptr<darr::DimsArray<float>> mSspDB;
	std::shared_ptr<darr::DimsArray<short>> mSedDB;
	std::shared_ptr<darr::DimsArray<short>> mDepthDB;

private:

};

} // namespace ocean
} // namespace ax

#endif // !LIB_AX_OCEAN_DATASET_H
